home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.2 for Intel / NeXTSTEP 3.2 for Intel.iso / NextAdmin / Installer.app / package < prev   
Encoding:
Text File  |  1993-02-19  |  4.6 KB  |  197 lines

  1. #! /bin/csh -ef
  2.  
  3. set prog = `/usr/bin/basename $0`
  4. set usage = "Usage: $prog [-B] [-f] root-dir info-file [tiff-file] [-d dest-dir]"
  5. set noglob
  6. # Use Installer's tar by default
  7. set tar = /NextAdmin/Installer.app/installer_tar
  8.  
  9. # gather parameters
  10. if ($#argv == 0) then
  11.     echo $usage
  12.     exit(1)
  13. endif
  14.  
  15. while ( $#argv > 0 )
  16.     switch ( $argv[1] )
  17.     case -d:
  18.         if ( $?destDir ) then
  19.         echo ${prog}: dest-dir parameter already set to ${destDir}.
  20.         echo $usage
  21.         exit(1)
  22.         else if ( $#argv < 2 ) then
  23.         echo ${prog}: -d option requires destination directory.
  24.         echo $usage
  25.         exit(1)
  26.         else
  27.         set destDir = $argv[2]
  28.         shift; shift
  29.         breaksw
  30.         endif
  31.     case -f:
  32.         if ( $?rootDir ) then
  33.         echo ${prog}: root-dir parameter already set to ${rootDir}.
  34.         echo $usage
  35.         exit(1)
  36.         else if ( $#argv < 2 ) then
  37.         echo ${prog}: -f option requires package root directory.
  38.         echo $usage
  39.         exit(1)
  40.         else
  41.         set rootDir = $argv[2]
  42.         set fflag
  43.         shift; shift
  44.         breaksw
  45.         endif
  46.     case -B:
  47.         # We got long file names, better use bigtar instead
  48.         set tar = /NextAdmin/Installer.app/installer_bigtar
  49.         shift
  50.         breaksw
  51.     case -*:
  52.         echo ${prog}: Unknown option: $argv[1]
  53.         echo $usage
  54.         exit(1)
  55.     case *.info:
  56.         if ( $?info ) then
  57.         echo ${prog}: info-file parameter already set to ${info}.
  58.         echo $usage
  59.         exit(1)
  60.         else
  61.         set info = "$argv[1]"
  62.         shift
  63.         breaksw
  64.         endif
  65.     case *.tiff:
  66.         if ( $?tiff ) then
  67.         echo ${prog}: tiff-file parameter already set to ${tiff}.
  68.         echo $usage
  69.         exit(1)
  70.         else
  71.         set tiff = "$argv[1]"
  72.         shift
  73.         breaksw
  74.         endif
  75.     default:
  76.         if ( $?rootDir ) then
  77.         echo ${prog}: unrecognized parameter: $argv[1]
  78.         echo $usage
  79.         exit(1)
  80.         else
  81.         set rootDir = "$argv[1]"
  82.         shift
  83.         breaksw
  84.         endif
  85.     endsw
  86. end
  87.  
  88. # check for mandatory parameters
  89. if ( ! $?rootDir ) then
  90.     echo ${prog}: missing root-dir parameter.
  91.     echo $usage
  92.     exit(1)
  93. else if ( ! $?info) then
  94.     echo ${prog}: missing info-file parameter.
  95.     echo $usage
  96.     exit(1)
  97. endif
  98.  
  99. # destDir gets default value if unset on command line
  100. if ( $?destDir ) then
  101.     /bin/mkdirs $destDir
  102. else
  103.     set destDir = .
  104. endif
  105.  
  106. # derive the root name for the package from the root name of the info file
  107. set root = `/usr/bin/basename $info .info`
  108.  
  109. # create package directory
  110. set pkg = ${destDir}/${root}.pkg
  111. echo Generating Installer package $pkg ...
  112. if ( -e $pkg ) /bin/rm -rf $pkg
  113. /bin/mkdirs -m 755 $pkg
  114.  
  115. # tar and compress root directory to package archive
  116. set pkgArchive = $pkg/$root.tar.Z
  117. echo -n "    creating package archive ... "
  118. set listFile = /tmp/bomlist.$$
  119. if ( $?fflag ) then
  120.     set pkgTop = ${rootDir:t}
  121.     set parent = ${rootDir:h}
  122.     if ( "$parent" == "$pkgTop" ) set parent = "."
  123. else
  124.     set parent = $rootDir
  125.     set pkgTop = .    
  126. endif
  127. ((cd $parent; $tar cvf - $pkgTop) | /usr/ucb/compress -f -c > $pkgArchive) \
  128.     |& sed -e 's/^a \(.*\) [0-9]* blocks*$/\1/' \
  129.            -e 's/^a \(.*\) symbolic link to .*$/\1/' \
  130.            -e 's/^a \(.*\) link to .*$/\1/' > $listFile
  131. /bin/chmod 444 $pkgArchive
  132. echo done.
  133.  
  134. # copy info file to package
  135. set pkgInfo = $pkg/$root.info
  136. echo -n "    copying ${info:t} ... "
  137. /bin/cp $info $pkgInfo
  138. /bin/chmod 444 $pkgInfo
  139. echo done.
  140.  
  141. # copy tiff file to package
  142. if ( $?tiff ) then
  143.     set pkgTiff = $pkg/$root.tiff
  144.     echo -n "    copying ${tiff:t} ... "
  145.     /bin/cp $tiff $pkgTiff
  146.     /bin/chmod 444 $pkgTiff
  147.     echo done.
  148. endif
  149.  
  150. # generate bom file
  151. set pkgBom = $pkg/$root.bom
  152. echo -n "    generating bom file ... "
  153. /bin/rm -f $pkgBom #>& /dev/null
  154. if ( $?fflag ) then
  155.     /usr/etc/mkbom $parent $listFile $pkgBom >& /dev/null
  156. else
  157.     /usr/etc/mkbom $rootDir $listFile $pkgBom >& /dev/null
  158. endif
  159. /bin/chmod 444 $pkgArchive
  160. echo done.
  161.     
  162. # generate sizes file
  163. set pkgSizes = $pkg/$root.sizes
  164. echo -n "    generating sizes file ... "
  165.  
  166. # compute number of files in package
  167. set numFiles = `/usr/ucb/wc -l <$listFile`
  168.  
  169. # compute package size when compressed
  170. @ compressedSize = `/bin/du -s $pkg | /bin/awk '{print $1}'`
  171. @ compressedSize += 3        # add 1KB each for sizes, location, status files
  172.  
  173. @ infoSize = `/bin/ls -s $pkgInfo | /bin/awk '{print $1}'`
  174. @ bomSize = `/bin/ls -s $pkgBom | /bin/awk '{print $1}'`
  175. if ( $?tiff ) then
  176.     @ tiffSize = `/bin/ls -s $pkgTiff | /bin/awk '{print $1}'`
  177. else
  178.     @ tiffSize = 0
  179. endif 
  180.  
  181. @ installedSize = `/bin/du -s $rootDir | /bin/awk '{print $1}'`
  182. @ installedSize += $infoSize + $bomSize + $tiffSize + 3
  183.  
  184. # echo size parameters to sizes file
  185. echo NumFiles $numFiles > $pkgSizes
  186. echo InstalledSize $installedSize >> $pkgSizes
  187. echo CompressedSize $compressedSize >> $pkgSizes
  188. echo done.
  189. echo " ... finished generating $pkg."
  190.  
  191. /bin/rm $listFile >&/dev/null
  192.  
  193. exit(0)
  194.  
  195. # end package
  196.     
  197.